package com.myown.structure;

import com.myown.structure.impl.AbstactTree;

/**
 * 树节点接口 <p>
 *
 * @author lincky
 * @version v1.0.0
 * @time 2017.02.28 14:40
 */
public interface TreeNode<E extends Comparable<E>> {

    /**
     * 清空节点
     */
    void clear();

    /**
     * 向节点添加右节点
     *
     * @param right 右节点
     */
    void insertRight(TreeNode<E> right);

    /**
     * 向节点添加左节点
     *
     * @param left 左节点
     */
    void insertLeft(TreeNode<E> left);

    boolean isLeft();

    boolean isRight();

    E item();

    TreeNode<E> parent();

    TreeNode<E> left();

    TreeNode<E> right();

    void setLeft(TreeNode<E> left);

    void setRight(TreeNode<E> right);

    void setParent(TreeNode<E> parent);
}
